package com.bjc.chapter05;

import java.util.Date;

/**
 * @program: jvm_demo
 * @description:
 * @author: bjc
 * @create: 2022-01-17 21:35
 */
public class LocalVariablesTest {

    private int count = 0;

    public static void main(String... args) {
        LocalVariablesTest test = new LocalVariablesTest();
        int num = 10;
        test.test1();
    }

    public static void testStatic(){
        LocalVariablesTest test = new LocalVariablesTest();
        Date date = new Date();
        int count = 10;
        // 因为this变量不存在于当前的局部变量表中！！
//        System.out.println(this.count);
        System.out.println(count);
    }

    public void test1() {
        Date date = new Date();
        String name1 = "bujingcheng";
        String info = test2(date, name1);
        System.out.println(date + name1);
    }

    public String test2(Date dateP, String name2) {
        dateP = null;
        name2 = "chenmeng";
        double weight = 99;
        char gender = '男';
        return dateP + name2;
    }

    public void test3() {
        count++;
    }

    public void test4() {
        int a = 0;
        {
            int b = 0;
            b = a + 1;
        }
        //变量c使用之前已经销毁的变量b占据的slot的位置
        int c = a + 1;
    }

    /**
     * 变量的分类：1.基本数据类型  2.引用数据类型
     *      按照在类中生命的位置分： 1.成员变量
     *                              类变量：linking的prepare阶段：给类变量默认赋值  --》initial阶段：给类变量显示赋值即静态代码块赋值
     *                              实例变量：随着对象的创建爱你，会在堆空间中分配实例变量空间，并进行默认赋值
     *                          2.局部变量：在使用前，必须要进行显示赋值的，否则编译不通过
     */
}
